البرمجة

دليل استخدام استعلامات SELECT في SQL

جلب الاستعلامات عبر SELECT في SQL: الأساسيات والتطبيقات المتقدمة

لغة الاستعلامات البنيوية (SQL) هي واحدة من أُسس إدارة البيانات في قواعد البيانات العلائقية. تعدّ جملة SELECT من أكثر العبارات استخدامًا في SQL لأنها تتيح للمستخدم استخراج البيانات من جدول أو عدة جداول بطريقة منظمة وفعّالة. تُعتبر SELECT أداة لا غنى عنها للمطورين ومديري قواعد البيانات، وتدعم أنماطًا متنوعة من العمليات مثل الفلاتر، التصفية، التجميع، والترتيب.

في هذا المقال، سنتناول جملة SELECT في SQL بكل تفاصيلها، ابتداءً من الأساسيات مرورًا بالوظائف المتقدمة التي تتيح للمستخدمين استخراج وتحليل البيانات بشكل دقيق ومرن. سنعرض كيفية استخدام جملة SELECT في حالات مختلفة مع التوضيح للأمثلة والسيناريوهات العملية.

1. جملة SELECT: الأساسيات

أبسط شكل من جملة SELECT هو استعلام يسترجع جميع البيانات من جدول معين. الفكرة الأساسية هي تحديد الأعمدة التي تريد استرجاعها والجدول الذي تريد جلب البيانات منه.

sql
SELECT column1, column2, column3 FROM table_name;
  • column1, column2, column3: هي الأعمدة التي تريد استرجاعها من الجدول.

  • table_name: هو اسم الجدول الذي يحتوي على البيانات.

على سبيل المثال، إذا كان لدينا جدول اسمه employees يحتوي على الأعمدة id, name, وsalary، فاستعلام SQL الذي سيجلب جميع البيانات سيكون كالتالي:

sql
SELECT id, name, salary FROM employees;

إذا كنت ترغب في استرجاع جميع الأعمدة دون الحاجة إلى ذكر أسماء الأعمدة، يمكنك استخدام النجمة *:

sql
SELECT * FROM employees;

هذا الاستعلام سيعيد كل البيانات الموجودة في جدول employees بكل الأعمدة.

2. استخدام شروط WHERE لتصفية البيانات

من أهم الأدوات التي توفرها جملة SELECT هي القدرة على تصفية البيانات باستخدام جملة WHERE. تُستخدم WHERE لتحديد شروط يجب أن تتحقق في البيانات المسترجعة. يمكن أن تكون الشروط بسيطة مثل مطابقة قيمة معينة أو معقدة باستخدام العمليات المنطقية والمقارنات.

على سبيل المثال، إذا كنت تريد جلب البيانات الخاصة بالموظفين الذين يتقاضون راتبًا أكبر من 5000، يمكنك استخدام:

sql
SELECT id, name, salary FROM employees WHERE salary > 5000;

يمكنك أيضًا دمج عدة شروط معًا باستخدام AND وOR:

sql
SELECT id, name, salary FROM employees WHERE salary > 5000 AND name LIKE 'A%';

هذا الاستعلام سيعرض الموظفين الذين يتقاضون راتبًا أكبر من 5000 ويبدأ اسمهم بحرف “A”.

3. الترتيب باستخدام ORDER BY

تُستخدم جملة ORDER BY لترتيب البيانات المسترجعة سواء بشكل تصاعدي أو تنازلي. ترتيب البيانات يُعتبر من العمليات الأساسية في جلب الاستعلامات لأنه يتيح للمستخدم تنظيم البيانات بشكل يسهل قراءتها وتحليلها.

الترتيب الافتراضي يكون تصاعديًا (من الأصغر إلى الأكبر)، ولكن إذا كنت بحاجة إلى ترتيب البيانات بشكل تنازلي، يمكنك إضافة الكلمة المفتاحية DESC.

على سبيل المثال، إذا كنت ترغب في ترتيب الموظفين حسب الراتب بشكل تنازلي، يمكنك كتابة:

sql
SELECT id, name, salary FROM employees ORDER BY salary DESC;

وإذا كنت ترغب في ترتيب البيانات تصاعديًا حسب الاسم:

sql
SELECT id, name, salary FROM employees ORDER BY name ASC;

4. تجميع البيانات باستخدام GROUP BY

عند التعامل مع البيانات التي تحتوي على مجموعات متشابهة (مثل الموظفين في قسم معين أو الفواتير التي تم إصدارها في شهر محدد)، يمكنك استخدام جملة GROUP BY لتجميع البيانات بناءً على قيمة معينة في العمود.

على سبيل المثال، إذا كنت تريد حساب متوسط الراتب لكل قسم في شركة، يمكنك استخدام:

sql
SELECT department, AVG(salary) FROM employees GROUP BY department;

سيعرض هذا الاستعلام المتوسط الحسابي للراتب لكل قسم في الشركة.

يمكنك أيضًا استخدام دوال تجميعية أخرى مثل COUNT (لحساب عدد السجلات)، SUM (لحساب مجموع القيم)، وMAX وMIN (لإيجاد أعلى وأدنى قيمة):

sql
SELECT department, COUNT(id) AS total_employees, MAX(salary) AS highest_salary FROM employees GROUP BY department;

5. استخدام الدوال التجميعية (Aggregate Functions)

توفر SQL مجموعة من الدوال التجميعية التي يمكن استخدامها مع جملة SELECT لتحليل البيانات. أشهر الدوال التجميعية تشمل:

  • COUNT: لحساب عدد السجلات.

  • SUM: لحساب مجموع القيم.

  • AVG: لحساب المتوسط الحسابي.

  • MAX: لإيجاد أعلى قيمة.

  • MIN: لإيجاد أدنى قيمة.

مثال:

sql
SELECT department, COUNT(*) AS num_employees, SUM(salary) AS total_salaries FROM employees GROUP BY department;

6. الانضمام بين الجداول باستخدام JOIN

في كثير من الأحيان، تكون البيانات متوزعة عبر عدة جداول مترابطة. تُستخدم جملة JOIN لدمج البيانات من جداول متعددة بناءً على علاقة مشتركة بينهما.

هناك عدة أنواع من JOIN، ولكن الأكثر استخدامًا هي:

  • INNER JOIN: يسترجع فقط السجلات التي تحتوي على تطابق بين الجداول.

  • LEFT JOIN: يسترجع جميع السجلات من الجدول الأيسر مع مطابقة البيانات من الجدول الأيمن.

  • RIGHT JOIN: يسترجع جميع السجلات من الجدول الأيمن مع مطابقة البيانات من الجدول الأيسر.

  • FULL JOIN: يسترجع جميع السجلات من كلا الجدولين.

على سبيل المثال، إذا كان لدينا جدول employees يحتوي على بيانات الموظفين وجدول آخر departments يحتوي على بيانات الأقسام، يمكننا استخدام JOIN لدمج البيانات:

sql
SELECT employees.name, employees.salary, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id;

هذا الاستعلام سيعرض أسماء الموظفين، رواتبهم، وأسمائهم الأقسام من خلال ربط الجدولين بواسطة department_id.

7. استخدام Subqueries (الاستعلامات الفرعية)

الاستعلامات الفرعية أو الـ Subqueries هي استعلامات يتم تضمينها داخل استعلام آخر. يمكن استخدام الاستعلامات الفرعية في أماكن متعددة مثل جملة WHERE أو جملة FROM.

مثال على استعلام فرعي في جملة WHERE:

sql
SELECT id, name, salary FROM employees WHERE department_id = (SELECT id FROM departments WHERE department_name = 'IT');

هذا الاستعلام سيعرض بيانات الموظفين الذين ينتمون إلى قسم تكنولوجيا المعلومات.

8. التعامل مع القيم المفقودة (NULL)

تتعامل SQL مع القيم المفقودة باستخدام الكلمة المفتاحية NULL. يمكن استخدام IS NULL أو IS NOT NULL للتحقق من وجود القيم المفقودة.

على سبيل المثال، إذا كنت ترغب في استرجاع جميع الموظفين الذين لم يتلقوا أي زيادات في الراتب (القيمة المفقودة في العمود bonus):

sql
SELECT id, name, salary FROM employees WHERE bonus IS NULL;

9. استخدام LIMIT لتحديد عدد السجلات المسترجعة

عند العمل مع جداول تحتوي على عدد ضخم من السجلات، قد يكون من الضروري تحديد عدد السجلات المسترجعة. تُستخدم جملة LIMIT (في بعض أنظمة إدارة قواعد البيانات مثل MySQL وPostgreSQL) لتحديد الحد الأقصى لعدد السجلات المسترجعة.

على سبيل المثال، إذا كنت ترغب في جلب أول 10 موظفين من جدول الموظفين:

sql
SELECT id, name, salary FROM employees LIMIT 10;

10. التعامل مع البيانات المجمعة باستخدام HAVING

في حالات التجميع، يمكن استخدام جملة HAVING لتصفية البيانات بعد التجميع. بخلاف جملة WHERE التي تُستخدم قبل التجميع، تُستخدم HAVING لتصفية البيانات بعد إجراء العمليات التجميعية.

على سبيل المثال، إذا كنت ترغب في جلب الأقسام التي تحتوي على أكثر من 10 موظفين:

sql
SELECT department, COUNT(id) AS num_employees FROM employees GROUP BY department HAVING COUNT(id) > 10;

الخاتمة

تُعد جملة SELECT من الأدوات الأساسية التي يستخدمها مطورو قواعد البيانات في استخراج وتحليل البيانات. من خلال معرفة كيفية استخدام الاستعلامات المتقدمة مثل الفلاتر، التجميع، الانضمام بين الجداول، والعديد من الدوال الأخرى، يمكن للمستخدمين تنفيذ استعلامات قوية وفعّالة تلبي مختلف احتياجاتهم.

تمنح هذه الاستعلامات القدرة على العمل مع البيانات بمرونة عالية، مما يساعد في تحسين أداء التطبيقات والتقارير الإدارية والبحثية.